package cn.ipanel.bigdata.dw.dim

import cn.ipanel.bigdata.dw.SUM_REGION_SERVERS
import cn.ipanel.bigdata.utils.Dictionary


package object phoenix {

  val T_CLASS_TAG                   : ClassTag.type               = ClassTag
  val T_AREA                        : IOTArea.type                = IOTArea
  val T_TOWN                        : IOTTown.type                = IOTTown
  val T_NEIGHBOR_HOOD               : IOTNeighborhood.type        = IOTNeighborhood
  val T_COUNTY                      : IOTCounty.type              = IOTCounty
  val T_DEVICE                      : IOTDevice.type              = IOTDevice
  val T_HOME                        : IOTHome.type                = IOTHome
  val T_AREA_UPDATE_TIME            : AreaUpdateTime.type         = AreaUpdateTime
  val T_TASK_STAT                   : TaskStat.type               = TaskStat


  def saltBuckets: String = s"$SUM_REGION_SERVERS"

  trait Area {
    final val F_LEVEL                   : String = "f_level"              // 解析区域后，赋予的等级
    final val F_COUNTY_ID               : String = "f_county_id"          // 本区域所在的 countyid，如果本区域是 county，那么同本区域 countyid
    final val F_COUNTY_NAME             : String = "f_county_name"        // 本区域所在的 countyname，如果本区域是 county，那么同本区域 countyname
    final val F_TOWN_ID                 : String = "f_town_id"            // 本区域所在的 townid，如果本区域是 town，那么同本区域 townid
    final val F_TOWN_NAME               : String = "f_town_name"          // 本区域所在的 townname，如果本区域是 town，那么同本区域 townname
    final val F_ID                      : String = "f_id"                 // 本区域在hbase的唯一id，根据五级区域，使用一定算法计算出来的
    final val F_LAST_P_ID_ARRAY         : String = "f_last_p_id_array"    // 曾经挂在过的父区域信息，为varchar array，内容如 '父区域id|f_id|更改时间（统计时间往前推一天）'
    final val F_LAST_S_NAME_ARRAY       : String = "f_last_s_name_array"  // 本区域曾经使用过名称信息，为varchar array，内容如 '本区域名称|统计时间（统计时间往前推一天）'
    final val F_NEIGHBORHOOD_ID         : String = "f_neighborhood_id"    // 居委会id
    final val F_NEIGHBORHOOD_NAME       : String = "f_neighborhood_name"  // 居委会名称
    final val F_STATUS                  : String = Dictionary.F_STATUS    // 状态

    final val LEVEL_COUNTY              : Int = 3
    final val LEVEL_TOWN                : Int = 4
    final val LEVEL_NEIGHBOR_HOOD       : Int = 5
  }


  trait IotArea extends Area {
    final val F_CODE            : String = "f_code"         // iot 区域code
    final val F_NAME            : String = "f_name"         // iot 区域名称
    final val F_PARENT_CODE     : String = "f_parent_code"  // iot 父区域code
  }

}
